#include<bits/stdc++.h>
#define int long long
#define N 1000005
using namespace std;
int n;
int a[N],b[N];
int vis[N<<2];
int A,B;
char s[N],t[N];
signed main(){
	freopen("hard.in","r",stdin);
	freopen("hard.out","w",stdout);
	scanf("%lld",&n);
	scanf("%s",s);
	scanf("%s",t);
	for(int i=0;i<n;i++) a[i]=s[i]-'0';
	for(int i=0;i<n;i++) b[i]=t[i]-'0';
	for(int i=0;i<n;i++) A+=(1ll<<i)*a[i];
	for(int i=0;i<n;i++) B+=(1ll<<i)*b[i];
	queue<int> q;
	q.push(A);
	vis[A]=1;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		for(int i=0;i<n;i++) a[i]=(x>>i);
		for(int i=0;i<n;i++){
			for(int j=i;j<n;j++){
				int o=0;
				for(int k=0;k<n;k++) b[k]=a[k];
				for(int k=i;k<=j;k++) b[k]=0;
				for(int k=0;k<n;k++) o+=(1ll<<k)*b[k];
				if(!vis[o]){
					vis[o]=vis[x]+1;
					q.push(o);
				}
				o=0;
				for(int k=0;k<n;k++) b[k]=a[k];
				for(int k=i;k<=j;k++) b[k]=1;
				for(int k=0;k<n;k++) o+=(1ll<<k)*b[k];
				if(!vis[o]){
					vis[o]=vis[x]+1;
					q.push(o);
				}
				o=0;
				for(int k=0;k<n;k++) b[k]=a[k];
				for(int k=i;k<=j;k++) b[k]=(b[k]^1);
				for(int k=0;k<n;k++) o+=(1ll<<k)*b[k];
				if(!vis[o]){
					vis[o]=vis[x]+1;
					q.push(o);
				}
			}
		}
	}
	printf("%lld",vis[B]-1);
	return 0;
}